import { Global, Module } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
const OSS = require('ali-oss');
const path = require('path');
export const ALI_OSS_CLIENT = 'ALI_OSS_CLIENT';
@Global()
@Module({
  providers: [
    {
      provide: ALI_OSS_CLIENT,
      async useFactory(configService: ConfigService) {
        const client = new OSS({
          // yourregion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
          region: configService.get('oss_region'),
          // 从环境变量中获取访问凭证。运行本代码示例之前，请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
          accessKeyId: configService.get('oss_accessKeyId'),
          accessKeySecret: configService.get('oss_accessKeySecret'),
          // 填写Bucket名称。
          bucket: configService.get('oss_bucket'),
          dir: 'photos',
        });
        // const rules = [
        //   {
        //     // 指定允许跨域请求的来源，支持通配符星号（*），表示允许所有的来源域。
        //     allowedOrigin: 'http://localhost:9567',
        //     // 指定允许的跨域请求方法，支持GET、PUT、DELETE、POST和HEAD方法。
        //     allowedMethod: 'GET',
        //     // 指定允许跨域请求的响应头。建议无特殊情况下将此项设置为通配符星号（*）。
        //     allowedHeader: '*',
        //     // 指定允许用户从应用程序中访问的响应头，例如一个JavaScript的XMLHttpRequest对象。不允许使用通配符星号（*）。
        //     exposeHeader: 'Content-Length',
        //     // 指定浏览器对特定资源的预取（OPTIONS）请求返回结果的缓存时间，单位为秒。
        //     maxAgeSeconds: '30',
        //   },
        // ];
        return client;
      },
      inject: [ConfigService]
    },
  ],
  exports: [ALI_OSS_CLIENT],
})
export class OssModule {}
